#pragma once

struct A
{
	struct B1* _pB1 = nullptr;
	struct B2* _pB2 = nullptr;

	int _i = 0;
	std::pair<int, int> _pr;

	std::vector<SetFactory*> _b1Fact;
	std::vector<SetFactory*> _b2Fact;

	template <typename... Args>
	A(Args&&... args);
	~A();

	void create();

	void set();
	template <typename K, typename... Args>
	void set(K&& k, Args&&... args);
	template <typename... Args>
	void set1(u64 k, Args&&... args);
	template <typename... Args>
	void set2(u64 k, Args&&... args);

	void show(int offset = 0);
};